package com.recursos.controlador;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import com.recursos.beans.EjbLogin;
import com.recursos.entidades.Usuario;
import com.recursos.modelo.DatosUsuario;
import com.recursos.view.utilidades.RedirectPage;
import com.recursos.view.utilidades.RedirectPageImpl;
import java.io.IOException;
import java.io.Serializable;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.servlet.http.HttpServletRequest;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import org.primefaces.context.RequestContext;

/**
 *
 * @author MARA
 */
@ManagedBean(name = "controladorLogin")
@RequestScoped
public class ControladorLogin extends RedirectPageImpl implements Serializable  {

    @EJB
    private EjbLogin facadeLogin;
    public static final String USER_SESSION_KEY = "user";

    private String usuario;
    private String password;
    private DatosUsuario datosUsuario;
    public ControladorLogin() {
    }

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public DatosUsuario getDatosUsuario() {
        return datosUsuario;
    }

    public void setDatosUsuario(DatosUsuario datosUsuario) {
        this.datosUsuario = datosUsuario;
    }

    public String login() {
        RequestContext context = RequestContext.getCurrentInstance();
        FacesMessage ms = null;
        boolean loggedIn = false;
        String ip = ((HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest()).getRemoteAddr();
        datosUsuario = new DatosUsuario();
        datosUsuario.setIdUsuario(usuario);
        datosUsuario.setIp(ip);

        Usuario u = facadeLogin.loginUser(datosUsuario, usuario, password);
        if (u != null) {
            loggedIn = true;
            FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(USER_SESSION_KEY, datosUsuario);
            ms = new FacesMessage(FacesMessage.SEVERITY_INFO, "Bienvenido", u.getNombreUsuario());
            return "inicio";
           // redirect.redirectToPage( FacesContext.getCurrentInstance(), "inicio");
        } else {
            loggedIn = false;
            ms = new FacesMessage(FacesMessage.SEVERITY_WARN, "Error de Ingreso", "Credenciales"
                    + " Invalidas");
        }

        FacesContext.getCurrentInstance().addMessage(null, ms);
        context.addCallbackParam("loggedIn", loggedIn);
        return null;
    }

}
